package com.tedu.api.io;

import org.junit.Test;

import java.io.*;
import java.util.Scanner;

/**
 * 案例：做一个记事本程序
 * 需求：程序开始之后，要求用户【从控制台】输入文件名--->假设：  a.txt
 *      然后，针对文本进行读写操作
 *      用户可以在【控制台】输入一行行的文本内容，要求：写入  a.txt文件中
 *      判断，如果用户输入“退出/exit”,程序结束
 *      a.txt直接出现  javaAPI项目下  保存对应文本的内容
 *
 * 要求：1.标准流--结合异常处理
 *      2.输出流---输入流【读】  单元测试    testNote()
 */
public class Note {
    //单元测试：相对路径 ./a.txt 当前父级文件夹路径 API下
    //主方法：  相对路径 ./a.txt 当前根基文件夹路径 javaAPI下
    public static void main(String[] args){
        //1.从控制台输入：  a.txt  文本
        Scanner input=new Scanner(System.in);
        System.out.println("请输入文件名：");
        String text=input.nextLine();  //获取一行文本
    //    System.out.println(text);  打桩
        //2.流---写
        String line= null;
        FileOutputStream fos= null;
        OutputStreamWriter osw= null;
        BufferedWriter bw= null;
        PrintWriter pw= null;
        try {
            fos= new FileOutputStream(text);
            osw= new OutputStreamWriter(fos,"UTF8");//转换流
            bw= new BufferedWriter(osw);  //缓冲输出流--加速字符串传输
            pw = new PrintWriter(bw);
            //3.往假设 a.txt 写入文件--一直写入，直到写出文件“退出/exit”
            //3.1 定义字符串变量--赋值为null，接收用户每次输入“文本内容”
            line = null;
            //3.2 【补充：考虑用户体验】提示内容
            System.out.println("请开始输入内容【’退出‘程序结束】：");
            //3.2 一直写入
            while(true){
            line=input.nextLine();  //从控制台获取一行文本
            //3.3 PW字符输出流--判断line是否等于 退出 或者 exit 程序结束
            if(line.equals("退出")||line.equals("exit")){
                break;//跳出方法体
            }
            //3.4 PW字符输出流--写出
            pw.println(line);
            }
        } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch(UnsupportedEncodingException  e){
            e.printStackTrace();
        }
        catch (IOException e) {
        e.printStackTrace();
    } finally {

        }
        //3.5 【用户体验】拜拜~~
        System.out.println("拜拜~~，请查看API文件夹生成文件！！");

        if(pw!=null)
        //3.6 关闭高级流
        pw.close();
    }
 public class FileReaderExample {
        public void main(String[] args) {
        try {
             // 1.从控制台输入：a.txt 文本
            java.util.Scanner input = new java.util.Scanner(System.in);
            System.out.println("请输入文件名：");
            String fileName = input.nextLine();

            // 2.流---读
            BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(fileName));
            String line;
            // 3.读取文件内容并输出
            System.out.println("文件内容如下：");
            while ((line = br.readLine())!= null) {
                System.out.println(line);
                }
            }     catch (IOException e) {
                   e.printStackTrace();
                  } finally {
                    if (br!= null) {
                            br.close();
                    }
                  }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
}

